package comlib.chisel.component.scheduler

import chisel3._

trait Control {
    def enable(): Bool
}

class Weight extends Control {
    def enable() = true.B
}

class Backpressure extends Control {
    def enable() = true.B
}

class Shaper extends Control {
    def enable() = true.B
}

/**
  * 调度器节点。整个调度器由调度器节点组成的树状结构组成
  * @param id: 当前调度节点序号(叶子节点有效)
  * @param req: 当前节点的请求信号(叶子节点有效)
  */
class SchNode(
    private val id:UInt=0.U,
    private val req:Bool=false.B
) {

    val child : Seq[SchNode] = Seq()    // 子节点

    protected val gnt = Wire(Bool())        // 本级仲裁的Grant
    protected var ctrl : Seq[Control] = Seq()               // 控制节点序列

    /**
      * 向上一级调度器请求
      */
    def request() = {

    }

    def roundRobin(  ) = {

    }

}

